home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ex68v209
/
ex68v209.lzh
/
X_WINDRV.LZH
/
WINDRV.S
< prev
next >
Wrap
Text File
|
1999-01-01
|
3KB
|
191 lines
*
* EX68用 windows disk driver
*
* device = windrv.sys を config.sysに登録する
*
* as windrv.s
* lk /owindrv.sys windrv
*
.include doscall.mac
.text
winport = $e9f000
reqlen = 0
unitcd = 1
comcod = 2
errlow = 3
erhigh = 4
*init
mxunit = 13
devend = 14
bdevno = 22
dsktbl:
dc.l -1
dc.w $2000
dc.l dskstr
dc.l dskent
dc.b 1,'WINDRV '
dskreq:
dc.l 0
dskjmp:
dc.l init
dc.l dir_search
dc.l dir_make
dc.l dir_kill
dc.l file_rename
dc.l file_kill
dc.l file_atr
dc.l files
dc.l nfiles
dc.l file_make
dc.l file_open
dc.l file_close
dc.l file_read
dc.l file_write
dc.l file_seek
dc.l file_time
dc.l drv_size
dc.l drv_atr
dc.l get_dpb
dc.l ioctrl_read
dc.l ioctrl_write
dc.l ioctrl_control
dc.l abort
dc.l media_change
dc.l check_lock
dskstr:
move.l a5,dskreq
rts
dskent:
movem.l d1/a4-a5,-(sp)
move.l dskreq,a5
lea dskjmp,a4
entry:
clr.l d0
move.b comcod(a5),d0
cmp.b #$40,d0
bcs no_remote
and.w #$1f,d0
add.w d0,d0
add.w d0,d0
move.l (a4,d0.w),a4
jsr (a4)
move.b d0,errlow(a5)
lsr.w #8,d0
move.b d0,erhigh(a5)
movem.l (sp)+,d1/a4-a5
rts
no_remote:
movem.l (sp)+,d1/a4-a5
rts
dir_search:
dir_make:
dir_kill:
file_rename:
file_kill:
file_atr:
files:
nfiles:
file_make:
file_open:
file_close:
file_read:
file_write:
file_seek:
file_time:
drv_size:
drv_atr:
get_dpb:
ioctrl_read:
ioctrl_write:
ioctrl_control:
abort:
media_change:
check_lock:
moveq #0,d0
move.b comcod(a5),d0
move.b d0,winport
rts
init:
movem.l d1-d7/a0-a6,-(sp)
dc.w _VERNUM ;humanバージョンチェック
cmp.l #$36380302,d0
* bcs ver_support
cmp.b #'W',winport ;ex68のサポートをチェックする
bne no_support
move.b #1,mxunit(a5)
* move.l #allend,devend(a5)
move.l #init,devend(a5)
moveq #0,d0
move.b comcod(a5),d0
move.b d0,winport
pea mes
dc.w _PRINT
addq.l #4,sp
moveq #0,d7
move.b mxunit(a5),d7
subq #1,d7
bmi no_mes
moveq #0,d1
mes_loop:
movem.l d1/d7,-(sp)
move.b bdevno(a5),d0
add d1,d0
add.b #'A',d0
move.b d0,drvmes
pea mes2
dc.w _PRINT
addq.l #4,sp
movem.l (sp)+,d1/d7
addq #1,d1
dbra d7,mes_loop
no_mes:
movem.l (sp)+,d1-d7/a0-a6
clr.w d0
rts
ver_support:
pea m_ver_sup
bra prt_err
no_support:
pea m_no_sup
bra prt_err
prt_err:
dc.w _PRINT
addq.l #4,sp
movem.l (sp)+,d1-d7/a0-a6
move.w #$700d,d0
rts
mes:
dc.b 13,10
dc.b 'windows disk driver for EX68 version 0.1',13,10,0
mes2:
dc.b 'win drive ('
drvmes:
dc.b 'C)',13,10,0
m_ver_sup:
dc.b 'Human68k version 3.02以前では使えません。',13,10,0
m_no_sup:
dc.b 'EX68上でのみ使用できます。',13,10,0
.even
allend: